In software engineering, a test case is a set of conditions or variables under which a tester will determine whether or not an application or a software system is functioning correctly. Many test cases may be required to evaluate whether an application or a software system is considered sufficiently scrutinized to be released. In order to fully test that all the requirements of an application or a software system are met, there must be at least two test cases for each requirement, one positive test and one negative test. If a requirement has sub-requirements, each sub-requirement must have at least two test cases, one positive test and one negative test. Written test cases should include a description of the functionality to be tested, and the preparation required to ensure that the test can be conducted. The traditional approach to writing test cases is to use a test management utility which enables a tester to write and record the test cases.